今天要來介紹廣播接收程式,先從Broadcast receiver的運作機制,它的運作機制包含:送出Intent物件的廣播器,與監聽廣播訊息的接收器,這兩項需要互相搭配才可以完成廣播功能。
接著,我們要來看Listener跟Broadcast兩者的功能差異:
每個Listener只能處理一種事件,根據需求有不同的監聽動作,例如:長按或點選,無法接受位定義的事件。也必須被特定對象綁定後才可以使用,影響範圍會受制於特定對象。
至於Broadcast是透過IntentFilter決定要接收的對象,只要定義對應IntentFilter就可以接受複數的廣播,它也不須綁定它是透過註冊及註銷來決定是否接受訊息,不過就只能被動接收,另外只要有定義註冊,可以接收系統訊息或自訂訊息。
接著,我們來建立Broadcast Receiver,要使用Broadcast要有接收器Receiver,所以我們先來產生一個Receiver,按照以下路徑去產生空白的Receiver
接著命名完後就可以按下finish。
完成後,系統會自動建造Class檔以及在AndroidMainfest也會增加Receiver的資訊。
在BroadcastReceiver使用上,需要透過registerReceiver(註冊接收器)與unregisterReceiver(註銷接收器)來建立Receiver,而它的用途就是等待廣播傳來,並執行工作。
在接收到之前我們需要先定義Receiver想要接收那些廣播事件,這將會用到IntentFilter類別,用於定義與過濾想要接收的廣播事件。
廣播器必須帶有識別字串的訊息,IntentFilter會藉由識別字串決定是否接收。識別字串則可以是系統定義或是自行定義
簡單說明常見的系統定義的事件,像我們常用手機用到電池容量太低就會顯示低電量通知,戴上耳機或拿下來也都會顯示toast訊息等等。